package csm.common.text;

/**
 * 한글문자의 자모정보를 표현하는 객체입니다.
 *
 * @author seungmun
 * @since 2006.1.18.
 *
 */
public final class HangulJamo
{
	/** 초성 */
	public char CHOSUNG = '\0';
	/** 초성 */
	public String CHOSUNG_Str = "";
	/** 중성 */
	public char JUNGSUNG = '\0';
	/** 중성 */
	public String JUNGSUNG_Str = "";
	/** 종성 */
	public char JONGSUNG = '\0';
	/** 종성 */
	public String JONGSUNG_Str = "";

	/**
	 * 한글문자의 자모정보를 표현하는 객체의 새로운 인스턴스를 생성합니다.
	 */
	public HangulJamo()
	{
	}

	/**
	 * 한글문자의 자모정보를 표현하는 객체의 새로운 인스턴스를 생성합니다.
	 *
	 * @param cho
	 *            초성자모
	 * @param jung
	 *            중성자모
	 * @param jong
	 *            종성자모
	 */
	public HangulJamo(char cho, char jung, char jong)
	{
		this.CHOSUNG = cho;
		this.JUNGSUNG = jung;
		this.JONGSUNG = jong;

		this.CHOSUNG_Str = String.valueOf(cho);
		this.JUNGSUNG_Str = String.valueOf(jung);
		this.JONGSUNG_Str = String.valueOf(jong);
	}

	/**
	 * 저장된 자모정보를 이용하여 완전한 한글 문자를 반환합니다.
	 *
	 * @return 완전한 한글 문자
	 */
	public String getString()
	{
		return UnicodeUtil.Korean.CombineJamo(this.CHOSUNG, this.JUNGSUNG, this.JONGSUNG);
	}

	/**
	 * 현재 저장된 자모가 유니코드 한글자모영역에서 KSC자모인지 여부를 반환합니다.
	 *
	 * @return True - 유니코드KSC자모
	 */
	public boolean IsUnicodeKscJamo()
	{
		if (CHOSUNG >= UnicodeUtil.HAN_JAMO_KSC_BEGIN && CHOSUNG <= UnicodeUtil.HAN_JAMO_KSC_END)
		{
			if (JUNGSUNG >= UnicodeUtil.HAN_JAMO_KSC_BEGIN && JUNGSUNG <= UnicodeUtil.HAN_JAMO_KSC_END)
			{
				return true;
			}
		}
		return false;
	}
}
